import { ApiProperty } from '@midwayjs/swagger';

export class SpatialFeatureCreateDto {
    @ApiProperty({
        description: '田块ID',
        example: 'TBID-12345',
        required: false,
    })
    TBID?: string;  // 田块ID（可为空）

    @ApiProperty({
        description: '面积',
        example: 120.5,
        required: false,
    })
    Area?: number;  // 面积（可为空）

    @ApiProperty({
        description: '监测任务名称',
        example: '监测任务1',
        required: false,
    })
    JCRWMC?: string;  // 监测任务名称（可为空）

    @ApiProperty({
        description: '监测任务代码',
        example: 'JCRWDM-12345',
        required: false,
    })
    JCRWDM?: string;  // 监测任务代码（可为空）

    @ApiProperty({
        description: '土地标识码',
        example: 'TBDM-12345',
        required: false,
    })
    TBDM?: string;  // 土地标识码（可为空）

    @ApiProperty({
        description: '用地类型名称',
        example: '农业用地',
        required: false,
    })
    YSWTLXMC?: string;  // 用地类型名称（可为空）

    @ApiProperty({
        description: '用地类型代码',
        example: 'YSWTLXDM-12345',
        required: false,
    })
    YSWTLXDM?: string;  // 用地类型代码（可为空）

    @ApiProperty({
        description: '土地变化类型',
        example: '新增',
        required: false,
    })
    TBBHLX?: string;  // 土地变化类型（可为空）

    @ApiProperty({
        description: '监测日期',
        example: '2024-01-01T10:00:00Z',
        required: false,
    })
    JCRQ?: Date;  // 监测日期（可为空）

    @ApiProperty({
        description: '监测结束日期',
        example: '2024-01-10T10:00:00Z',
        required: false,
    })
    JZRQ?: Date;  // 监测结束日期（可为空）

    @ApiProperty({
        description: '经度',
        example: 123.4567,
        required: false,
    })
    JD?: number;  // 经度（可为空）

    @ApiProperty({
        description: '纬度',
        example: 78.4567,
        required: false,
    })
    WD?: number;  // 纬度（可为空）

    @ApiProperty({
        description: '省',
        example: '新疆',
        required: false,
    })
    SHENG?: string;  // 省（可为空）

    @ApiProperty({
        description: '市',
        example: '阿勒泰',
        required: false,
    })
    SHI?: string;  // 市（可为空）

    @ApiProperty({
        description: '区县',
        example: '吉木乃县',
        required: false,
    })
    XIAN?: string;  // 区县（可为空）

    @ApiProperty({
        description: '行政区代码',
        example: '654326',
        required: false,
    })
    XZQDM?: string;  // 行政区代码（可为空）

    @ApiProperty({
        description: '卫星影像获取日期',
        example: '2024-02-01T10:00:00Z',
        required: false,
    })
    WTFXRQ?: Date;  // 卫星影像获取日期（可为空）

    @ApiProperty({
        description: '专业人员',
        example: '张三',
        required: false,
    })
    ZYRY?: string;  // 专业人员（可为空）

    @ApiProperty({
        description: '专家人员',
        example: '李四',
        required: false,
    })
    ZJRY?: string;  // 专家人员（可为空）

    @ApiProperty({
        description: '问题来源',
        example: '人为变化',
        required: false,
    })
    WTLY?: string;  // 问题来源（可为空）

    @ApiProperty({
        description: '标注字段',
        example: 123.45,
        required: false,
    })
    BZ?: number;  // 标注字段（可为空）

    @ApiProperty({
        description: '前时相影像',
        example: 'GF1B_PMS_12345',
        required: false,
    })
    JZSXWXSJ?: string;  // 监测数据对应卫星影像（可为空）
    @ApiProperty({
        description: '后时相影像',
        example: 'GF1B_PMS_12345',
        required: false,
    })

    JCSXWXSJ?: string;  // 监测数据对应卫星影像（可为空）
    @ApiProperty({
        description: '',
        example: '',
        required: false,
    })
    qian?: string;  // 监测数据对应卫星影像（可为空）
    @ApiProperty({
        description: '',
        example: '',
        required: false,
    })
    hou?: string;  // 监测数据对应卫星影像（可为空）
    
    @ApiProperty({
        description: '几何数据',
        example: {},
        required: false,
    })
    geom?: object;  // 几何数据（GeoJSON）
}

export class SpatialFeatureUpdateDto {

    @ApiProperty({
        description: '空间特征ID',
        example: 'some-uuid',
    })
    id: string;  // 空间特征ID
    @ApiProperty({
        description: '田块ID',
        example: 'TBID-12345',
        required: false,
    })
    TBID?: string;  // 田块ID（可为空）

    @ApiProperty({
        description: '面积',
        example: 120.5,
        required: false,
    })
    Area?: number;  // 面积（可为空）

    @ApiProperty({
        description: '监测任务名称',
        example: '监测任务1',
        required: false,
    })
    JCRWMC?: string;  // 监测任务名称（可为空）

    @ApiProperty({
        description: '监测任务代码',
        example: 'JCRWDM-12345',
        required: false,
    })
    JCRWDM?: string;  // 监测任务代码（可为空）

    @ApiProperty({
        description: '土地标识码',
        example: 'TBDM-12345',
        required: false,
    })
    TBDM?: string;  // 土地标识码（可为空）

    @ApiProperty({
        description: '用地类型名称',
        example: '农业用地',
        required: false,
    })
    YSWTLXMC?: string;  // 用地类型名称（可为空）

    @ApiProperty({
        description: '用地类型代码',
        example: 'YSWTLXDM-12345',
        required: false,
    })
    YSWTLXDM?: string;  // 用地类型代码（可为空）

    @ApiProperty({
        description: '土地变化类型',
        example: '新增',
        required: false,
    })
    TBBHLX?: string;  // 土地变化类型（可为空）

    @ApiProperty({
        description: '监测日期',
        example: '2024-01-01T10:00:00Z',
        required: false,
    })
    JCRQ?: Date;  // 监测日期（可为空）

    @ApiProperty({
        description: '监测结束日期',
        example: '2024-01-10T10:00:00Z',
        required: false,
    })
    JZRQ?: Date;  // 监测结束日期（可为空）

    @ApiProperty({
        description: '经度',
        example: 123.4567,
        required: false,
    })
    JD?: number;  // 经度（可为空）

    @ApiProperty({
        description: '纬度',
        example: 78.4567,
        required: false,
    })
    WD?: number;  // 纬度（可为空）

    @ApiProperty({
        description: '省',
        example: '新疆',
        required: false,
    })
    SHENG?: string;  // 省（可为空）

    @ApiProperty({
        description: '市',
        example: '阿勒泰',
        required: false,
    })
    SHI?: string;  // 市（可为空）

    @ApiProperty({
        description: '区县',
        example: '吉木乃县',
        required: false,
    })
    XIAN?: string;  // 区县（可为空）

    @ApiProperty({
        description: '行政区代码',
        example: '654326',
        required: false,
    })
    XZQDM?: string;  // 行政区代码（可为空）

    @ApiProperty({
        description: '卫星影像获取日期',
        example: '2024-02-01T10:00:00Z',
        required: false,
    })
    WTFXRQ?: Date;  // 卫星影像获取日期（可为空）

    @ApiProperty({
        description: '专业人员',
        example: '张三',
        required: false,
    })
    ZYRY?: string;  // 专业人员（可为空）

    @ApiProperty({
        description: '专家人员',
        example: '李四',
        required: false,
    })
    ZJRY?: string;  // 专家人员（可为空）

    @ApiProperty({
        description: '问题来源',
        example: '人为变化',
        required: false,
    })
    WTLY?: string;  // 问题来源（可为空）

    @ApiProperty({
        description: '标注字段',
        example: 123.45,
        required: false,
    })
    BZ?: number;  // 标注字段（可为空）

    @ApiProperty({
        description: '监测数据对应卫星影像',
        example: 'GF1B_PMS_12345',
        required: false,
    })
    JZSXWXSJ?: string;  // 监测数据对应卫星影像（可为空）
    @ApiProperty({
        description: '后时相影像',
        example: 'GF1B_PMS_12345',
        required: false,
    })
    JCSXWXSJ?: string;  // 监测数据对应卫星影像（可为空）

    @ApiProperty({
        description: '',
        example: '',
        required: false,
    })
    qian?: string;  // 监测数据对应卫星影像（可为空）
    @ApiProperty({
        description: '',
        example: '',
        required: false,
    })
    hou?: string;  // 监测数据对应卫星影像（可为空）

    @ApiProperty({
        description: '几何数据',
        example: {},
        required: false,
    })
    geom?: object;  // 几何数据（GeoJSON）
}

export class SpatialFeatureQueryDto {

    @ApiProperty({
        description: '田块ID',
        example: 'TBID-12345',
        required: false,
    })
    TBID?: string;  // 田块ID（可为空）

    @ApiProperty({
        description: '监测任务名称',
        example: '监测任务1',
        required: false,
    })
    JCRWMC?: string;  // 监测任务名称（可为空）

    @ApiProperty({
        description: '当前页码',
        example: 1,
    })
    page: number = 1;  // 默认页码

    @ApiProperty({
        description: '每页显示的数量',
        example: 10,
    })
    limit: number = 10;  // 默认每页显示数量
}

export class SpatialFeatureDeleteDto {

    @ApiProperty({
        description: '空间特征ID',
        example: 'some-uuid',
    })
    id: string;  // 空间特征ID
}
